#include "Arduino.h"
#include "Task.h"

// 自定义任务类，继承自 Task
class MyTask : public Task {
public:
    MyTask(std::string taskName = "MyTask", uint16_t stackSize = 10000, uint8_t priority = 5)
        : Task(taskName, stackSize, priority) {}

    // 实现纯虚函数 run
    void run(void *data) override {
        int *counter = static_cast<int*>(data);
        if (counter) {
            while (true) {
                (*counter)++;
                Serial.print("Counter value: ");
                Serial.println(*counter);
                delay(1000); // 延迟 1 秒
            }
        }
    }
};

// 全局计数器变量
int myCounter = 0;

void setup() {
    Serial.begin(115200);

    // 创建自定义任务实例
    MyTask myTask("MyTask", 10000, 5);

    myTask.setCore(1);
    // 启动任务，并传递计数器指针作为数据
    myTask.start(&myCounter);
}

void loop() {
    // 主循环可以执行其他任务
    // 这里只是简单地延迟
    delay(100);
}